iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0

今天不單純聊了網頁,來多談一個話題--跨平臺的GUI框架

今天跑去聽了不少東西,其中一個還蠻有趣的,在說跨平臺應用程式的前世今生。不巧,對於跨平臺的框架我也是略懂略懂,所以今兒就來多談一點跨平臺,甚至跨裝置的一些GUI框架吧!

非Web相關

tk

well,說到跨平臺的GUI,我第一個想到的不是tk,但是又認爲這應該先提一下。tk最早出現於tcl語言裏面,常寫成tcl/tk。基本上tcl是一個命令式的程式語言,不過重點不在於tcl,而是tk。沒記錯tk全名應該試toolkit,也就是工具集,雖然最早是出現在tcl上,但不少語言也有相關綁定,其中最有名的大概就是python裡自帶的Tkinter,Python跨平臺的特性我想不必多說,TK也是輕巧且跨平臺。

wxWedgit

這會是我第一會想到的其中一個框架,其中最大的特色是對作業系統原生GUI服務做轉換,也就是寫出來,用不同作業系統編譯起來,得到的接過會非常接近以原生方式寫的。有一點像是Native Script,不過今天聽起來兩者架構與理念上還是有點差異。
不過因爲要跨平臺,相對wegit沒有另外兩個豐富(聽說的拉,我自己沒比較過)。在後來也有wxAndroid的版本。在Windows、iOS和Linux平臺下活的不錯,但是其他平臺.....恩,應該會遇到與React Native類似問題。

GTK+

這也是在Linux上非常之名的玩意兒,一樣可以做到跨平臺,並且提供了而外豐富的函式庫。GTK中間幫你夾了一層,讓不同平臺的GUI行爲一致

Qt

很像GTK,寫出來的介面也很漂亮,我很喜歡。同樣提供豐富而外的函式庫可以使用,也就是統一了一部分不同平臺不一致的問題。早期Qt針對開源使用GPL授權,近來已經改成LGPL,並且還有商業授權,你可以購買商業支援服務。(Qt的授權方式豐富,前陣子看有部分使用GPL,有些可以選擇使用GPL或LGPL,至於購買商業授權的話甚至可以直接變成閉源軟體,還有相關的商業支援服務可以購買)

近年來也早就支援行動裝置。(貌似黑莓、iPhone、Android都有支援)

Java GUI

我只之道有兩到三種,摸的不多...不知道swing是不是還是主要的......
(早期好像是awt,後來一部分轉移到swing)

OpenGL

聽說有人用OpenGL自幹。(應該還要配合其他跨平臺函式庫)

上面幾個是我認爲比較知名,且有豐富語言綁定的框架。(Qt雖然主要是給C++,不過Python有PyQt、PySide)
不同程式語言可能也有不同解決方案,在Lisp社群,有使用Java GUI的clojure、abcl,也有商業支援的mocl、LispWorks,或是最近還蠻活躍的McCLIM。Python另外有一個我也覺得不錯的專案--Kivy。

Web Base

近來Web Base的GUI好像成了顯學,早期我認爲不好的地方在於效率不佳,不過近來好像沒什麼影響了。其實就像是GTK、Qt,瀏覽器幫你與作業系統中間夾了一層,讓不同平臺也有相同行爲。最大好處應該就是只要平臺支援瀏覽器夠新,就幾乎可以運行。

在瀏覽器之外,還有一種做法是轉換成原生的程式。那麼我們來說說今天提到哪些吧!

CORDOVA

恩,應該沒搞錯CORDOVAPhoneGap有關係。

NativeScript

聽過,看過一些文件。

React Native

Orz,之前都沒搞清楚原來與NativeScript是分開的。我還以爲React.js和Native Script做的事情不一樣,是混合著用。(可能還是能混合者用吧)(Yoga)

Electron

for 桌面的。之前也提到過Atom和VSCode就是用Electron寫的。(遇到機會變高,早期一個prototype的工具Pencil,也用Electron改寫)

Flutter

使用Dart語言。沒記錯Google曾經想把Dart玩進瀏覽器裏面。在多看TypeScript和ES6前曾經看過,但覺得小東西好像直接用JS寫就好了。(看完TypeScript和ES6之後好像可以在重看一次Dart,可能會有不同感覺)

PWA

PWA。不過應該比較像是一種模式,而不是框架。簡單說寫網頁就對了。

其實還有幾個針對行動裝置的跨平臺工具,像是Corona Labs。(不過他沒for Linux的開發版本,所以我後來也沒玩過)。


可以看到網頁前端的GUI,只要有瀏覽器,就可以運行。瀏覽器越來越強大,還有以瀏覽器微爲基礎的作業系統,且HTML、CSS的易學,現在要開發簡易的快平臺GUI非常容易。(溫馨提醒:需要做複雜的事情應該還有很多坑)


上一篇
不是百分之百除錯術 - 瀏覽器裡的開發工具
下一篇
CSS框架網頁框架(上)
系列文
從零開始遲來的Web開發筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言